An animated character rig consists of a joint hierarchy connected to a skin mesh, together defining the topology of some portion of a character's anatomy, typically the character's head. An example of such a rig is shown in FIG. 1. In a head rig, altering the positions of the joints serves as a mechanism for manipulating expressions.
The current state of the art in animation of heads is provided in Richie et al., “The Art of Rigging”, (CG Toolkit, 2005), which is incorporated herein by reference.
Joints of a head rig may be represented as a set of m vectors (xi, yi, zi). One or more of the joints is assigned to each vertex of a skin mesh, each with an associated weighting value, which defines how much a specific joint or combination of joints influences the vertex in a deformation process as the joints undergo motion.
Skin meshes are defined by sets of connected vertices. The movement of each vertex is determined by a weighted linear combination of joint movements. A vector of skin weights is stored with respect to each vertex, where the elements of each vector represent the influence of each joint on the particular vertex. A rigged character has all skin weights set to produce realistic skin deformation as joints move. Producing such a set of skin weights is a time-consuming and highly skilled task.
By virtue of the association of joints and skin mesh vertices, each joint causes a set of vertices of the skin mesh to move in a weighted linear manner. An expression is created by adjusting joint positions and setting skin weights until the desired skin shape is achieved.
In accordance with current practice, skin weights are static for each rig and affect the topology of all expressions. Defining skin weights (“skinning”) for a character is a time-consuming and skilled process, as care must be taken to ensure a good skin topology for all realistic joint positions.
During character creation (“rigging”), each rig requires a number of basic expressions to be defined, for example mouth open, smile, left eye blink, raise brows, etc. These basic expressions will be combined linearly by an animator to produce a full range of realistic facial appearance. It is typically required to define around 100 basic expressions to allow animators to achieve realistic results. Each of these basic expressions must be replicated across every rig to provide animators with a consistent character interface. The process of replicating each basic expression for every rig in development is time consuming and potentially error prone when performed manually.
For these reasons, there is a clear need for automatic methods of transferring skin weights, and joint positions defining expressions, between rigs.